class LocationService {
  constructor() {
    this.isRunning = false;
    this.watchId = null;
  }

  startLocationService() {
    if (this.isRunning) return;

    // 启动前台服务（仅Android）
    if (uni.getSystemInfoSync().platform === 'android') {
      plus.android.importClass("android.app.Notification");
      plus.android.importClass("android.app.NotificationChannel");
      plus.android.importClass("android.app.NotificationManager");
      
      const main = plus.android.runtimeMainActivity();
      const manager = main.getSystemService('notification');
      
      // 创建通知渠道
      const channelId = 'location_service';
      const channel = new Notification.Builder(main, channelId)
        .setContentTitle('正在运行')
        .setContentText('位置服务正在后台运行')
        .setSmallIcon(main.getApplicationInfo().icon)
        .build();
      
      // 启动前台服务
      main.startForeground(1, notification);
    }

    // 开始持续定位
    this.watchId = plus.geolocation.watchPosition(
      (position) => {
        console.log('获取位置:', position);
        // 处理位置信息
        this.handleLocation(position);
      },
      (error) => {
        console.error('定位错误:', error);
      },
      {
        provider: 'amap', // 使用高德定位
        coordsType: 'gcj02', // 使用国测局坐标
        enableHighAccuracy: true, // 高精度定位
        interval: 10000, // 定位间隔（毫秒）
        timeout: 10000
      }
    );

    this.isRunning = true;
  }

  stopLocationService() {
    if (!this.isRunning) return;

    // 停止定位监听
    if (this.watchId !== null) {
      plus.geolocation.clearWatch(this.watchId);
      this.watchId = null;
    }

    // 停止前台服务（仅Android）
    if (uni.getSystemInfoSync().platform === 'android') {
      const main = plus.android.runtimeMainActivity();
      main.stopForeground(true);
    }

    this.isRunning = false;
  }

  handleLocation(position) {
    // 处理位置信息，例如上传到服务器
    const location = {
      latitude: position.coords.latitude,
      longitude: position.coords.longitude,
      timestamp: position.timestamp,
      accuracy: position.coords.accuracy,
      speed: position.coords.speed
    };

    // TODO: 将位置信息发送到服务器
    console.log('位置信息:', location);
  }
}

export const locationService = new LocationService(); 